<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>日期和函数</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
</head>
<body>
    <div>
        <ul>
            <li>获取2018-06-10格式的日期</li>
            <li>获取随机数，要求是长度一直的字符串格式<br>
                <ol>Math.random()</ol>
            </li>
            <li>写一个能遍历对象和数组的通用forEach函数</li>
        </ul>
        <br><br>
        <ul>
            <h2>数组API</h2>
            <li>forEach遍历所有元素</li>
            <li>every判断所有元素是否都符合</li>
            <li>some判断是否有至少一个元素符合条件</li>
            <li>sort排序</li>
            <li>map对元素重新组装，生成新的数组</li>
            <li>filter过滤符合条件的元素</li>
        </ul>
    </div>
    <script>
        Date.now();//获取当前时间毫秒数
       //console.log( Date.now());
       var dt = new Date()
       dt.getTime();//获取毫秒数
       dt.getFullYear();//年
       dt.getMonth();//月
       dt.getDate();//日
       dt.getHours();//小时
       dt.getMinutes();//分
       dt.getSeconds();//秒
       //forEach遍历
       var arr = [1,2,3]
       arr.forEach(function(item,index){
           //遍历数组的所有元素
           console.log(index,item)//打印出对应的顺序和元素
       })

       //every遍历，当有大于4的时候就会false
       var arr = [1,2,3,4,5]
       var result = arr.every(function(item,index){
           //用于判断所有数组元素都满足一个条件
           if(item<4){
               return true
           }
       })
       console.log(result);

       //some遍历
       var arr = [1,2,3]
       var result = arr.some(function(item,index){
           ///用于判断所有数组元素,只要满足一个条件即可
           if(item<2){
               return true;
           }
       })
       console.log(result);
       //sort排序
       var arr = [1,4,2,3,5]
       var arr2 = arr.sort(function(a,b){
           //从小到大排序
           return a-b;
           //从大到小
          // return b-a;
       })
       console.log(arr2)

       //map重装数组
       var arr = [1,2,3,4]
       var arr2 = arr.map(function(item,index){
           //将元素重新组装，并且返回
           return '<b>'+item+'</b>'
       })
       console.log(arr2);//["<b>1</b>", "<b>2</b>", "<b>3</b>", "<b>4</b>"]

       //filter过滤
       var arr = [1,2,3]
       var arr2 = arr.filter(function(item,index){
           //通过某一个条件过滤数组
           if(item>=2){
               return true;
           }
       })
       console.log(arr2);//[2, 3]

       //对象API
       var obj ={
           x:100,
           y:200,
           z:300
       }
       var key
       for(key in obj){
           if(obj.hasOwnProperty(key)){
            //hasOwnProperty 方法是 Javascript 中唯一一个处理对象属性而不会往上遍历原型链的。
               console.log(key,obj[key]);//x 100
           }
       }

       //获取2018-06-10格式的日期
       var dt = new Date()
       var formatDate = formatDate(dt);
       function formatDate(dt){
           if(!dt){
               dt = new Date();
           }
           var year = dt.getFullYear();
           var month = dt.getMonth();
           var date = dt.getDate();
           if(month<10){
               //强制转换类型
               month = '0' + month;
           }
           if(date<10){
               date = '0'+ date;
           }
           return year + '-'+ month + '-' + date;
       }
       console.log(formatDate);

       //获取随机数，要求是长度一直的字符串格式
       var random = Math.random()
       var random = random + '0000000000' //后面加上10个0
       var random = random.slice(0,10);//0.29320227
       var random = random.slice(0,8);//0.236464
       var random = random.slice(0,7);//5位
       console.log(random);

       //写一个能遍历对象和数组的通用forEach函数
       function forEach(obj,fn){
           var key;
           if(obj instanceof Array){
               //准确判断是不是数组
               obj.forEach(function(item,index){
                   fn(index,item)
               })
           }else{
               //不是数组
               for (key in obj){
                    if(obj.hasOwnProperty(key)){
                        //hasOwnProperty 方法是 Javascript 中唯一一个处理对象属性而不会往上遍历原型链的。
                        console.log(key,obj[key]);//x 100
                    }
               }
           }
       }
       var arr = [1,2,3];
       forEach(arr,function(index,item){
           console.log(index,item)
       })

       var obj = {x:100,y:200};
       forEach(obj,function(key,val){
           console.log(key,val)
       })
    </script>
</body>
</html>